package com.hrzyit.base.common

import android.app.Application
import android.content.Context
import android.support.multidex.MultiDex
import com.alibaba.android.arouter.launcher.ARouter
import com.hrzyit.base.injection.component.AppComponent
import com.hrzyit.base.injection.component.DaggerAppComponent
import com.hrzyit.base.injection.module.AppModule

/**
 * Application 基类
 * @author ywhtyj
 * @date 2019/3/5
 */
open class BaseApplication:Application() {

    /**
     * 全局伴生对象
     */
    companion object {
        lateinit var context: Context
    }

    lateinit var appComponent:AppComponent

    override fun onCreate() {
        super.onCreate()

        initAppInjection()

        context = this
        // 初始化 ARouter
        // 这两行必须写在init之前，否则这些配置在init过程中将无效
//        if (isDebug()) {
            // 打印日志
            ARouter.openLog()
            // 开启调试模式(如果在InstantRun模式下运行，必须开启调试模式！线上版本需要关闭,否则有安全风险)
            ARouter.openDebug()
//        }
        // 尽可能早，推荐在Application中初始化
        ARouter.init(this)
    }


    override fun attachBaseContext(context: Context) {
        super.attachBaseContext(context)
        // 主要是添加下面这句代码：解决 65535 问题
        MultiDex.install(context)
    }

    /**
     * Application Component初始化
     */
    private fun initAppInjection() {

        appComponent = DaggerAppComponent.builder()
            .appModule(AppModule(this))
            .build()

    }


}